/**
 * @file resource.js
 * @description 智能教学资源管理相关API
 * @created 2024-06-26
 */
import request from '@/utils/request'

/**
 * 上传教学资源
 * @param {FormData} data - 包含file、resource_name、creator_id的表单数据
 * @returns {Promise}
 */
export function uploadResource(data) {
  return request.post('/api/admin/resource/upload/', data)
}

/**
 * 获取资源列表
 * @returns {Promise}
 */
export function getResourceList() {
  console.log('开始请求资源列表API');
  return request.get('/api/admin/resource/list/')
    .then(res => {
      console.log('资源列表API原始响应:', JSON.stringify(res).substring(0, 500));
      
      // 特别检查返回数据格式
      if (typeof res === 'object') {
        console.log('返回数据类型: 对象');
        
        // 检查是否有status字段
        if (res.hasOwnProperty('status')) {
          console.log('返回对象包含status字段:', res.status);
          
          // 检查是否有data字段
          if (res.hasOwnProperty('data')) {
            console.log('返回对象包含data字段');
            
            // 检查是否有resources数组
            if (res.data && res.data.hasOwnProperty('resources')) {
              console.log('返回data包含resources数组, 长度:', res.data.resources.length);
              
              // 进一步处理resources数组
              const resources = res.data.resources;
              
              // 确保每条资源记录都有id字段
              resources.forEach((resource, index) => {
                if (!resource.id && resource.resource_id) {
                  console.log(`修复第${index+1}条资源记录的ID`);
                  resource.id = resource.resource_id;
                }
              });
              
              // 返回处理后的数据
              return {
                status: 'success',
                data: resources
              };
            } else {
              console.warn('返回data不包含resources数组');
              return {
                status: 'error',
                message: '数据格式错误: 缺少resources数组',
                data: []
              };
            }
          } else {
            console.warn('返回对象不包含data字段');
            return {
              status: 'error',
              message: '数据格式错误: 缺少data字段',
              data: []
            };
          }
        } else {
          console.warn('返回对象不包含status字段');
          // 可能是直接返回了资源数组
          if (Array.isArray(res)) {
            console.log('返回数据是数组，长度:', res.length);
            return {
              status: 'success',
              data: res
            };
          } else {
            return {
              status: 'error',
              message: '数据格式错误: 缺少status字段',
              data: []
            };
          }
        }
      } else {
        console.warn('返回数据类型不是对象:', typeof res);
        return {
          status: 'error',
          message: `数据格式错误: 返回类型为 ${typeof res}`,
          data: []
        };
      }
    })
    .catch(error => {
      console.error('获取资源列表失败:', error);
      return {
        status: 'error',
        message: error.message || '网络错误',
        data: []
      };
    });
}

/**
 * 获取资源详情
 * @param {number} id - 资源ID
 * @returns {Promise}
 */
export function getResourceDetail(id) {
  return request.get(`/api/admin/resource/detail/${id}/`)
    .then(res => {
      console.log('资源详情原始响应:', res);
      
      if (res.status === 'success' && res.data) {
        return {
          status: 'success',
          data: res.data
        };
      }
      
      return {
        status: 'error',
        message: '获取资源详情失败',
        data: null
      };
    })
    .catch(error => {
      console.error('获取资源详情失败:', error);
      return {
        status: 'error',
        message: error.message || '网络错误',
        data: null
      };
    });
}

/**
 * 删除资源
 * @param {number} id - 资源ID
 * @returns {Promise}
 */
export function deleteResource(id) {
  // 使用正确的URL路径
  return request.delete(`/api/admin/resource/delete/${id}/`)
    .then(res => {
      console.log('删除资源响应:', res);
      return res;
    })
    .catch(error => {
      console.error('删除资源失败:', error);
      throw error;
    });
}

/**
 * 更新资源信息
 * @param {number} id - 资源ID
 * @param {Object} data - 更新的资源信息
 * @returns {Promise}
 */
export function updateResource(id, data) {
  return request.put(`/api/admin/resource/update/${id}/`, data)
} 